package gdconf

import (
	"server_cluster/common/logger"
)

// 地牢配置表

type DungeonConfig struct {
	DungeonId          int32 `csv:"Id" gorm:"primary_key;autoIncrement:false"` // 地牢id
	ActivityId         int32 `csv:"ActivityId,omitempty"`                      // 活动id
	BattleGroupId      int32 `csv:"BattleGroupId,omitempty"`                   // 战斗组id
	EnterCostItemId    int32 `csv:"ItemCost,omitempty"`                        // 进入消耗道具id
	EnterCostItemCount int32 `csv:"ItemNum,omitempty"`                         // 进入消耗道具数量
	PlayerLevelLimit   int32 `csv:"LevelLimit,omitempty"`                      // 玩家等级限制
}

func (d *DungeonConfig) TableName() string {
	return "config_dungeon"
}

func (g *GameDataConfig) saveDungeonConfig() {
	saveTableToDb[DungeonConfig](g.Db, readTable[DungeonConfig](g.CsvPathPrefix+"Dungeons.csv"))
}

func (g *GameDataConfig) loadDungeonConfig() {
	g.GameDataMaps.DungeonConfigMap = make(map[int32]*DungeonConfig)
	for _, dungeonConfig := range loadTableFromDb[DungeonConfig](g.Db) {
		g.GameDataMaps.DungeonConfigMap[dungeonConfig.DungeonId] = dungeonConfig
	}
	logger.Info("DungeonConfig Count: %v", len(g.GameDataMaps.DungeonConfigMap))
}

func GetDungeonConfig(dungeonId int32) *DungeonConfig {
	value, exist := CONF.GameDataMaps.DungeonConfigMap[dungeonId]
	if !exist {
		logger.Error("[ConfigNotFound] DungeonConfig, dungeonId: %v", dungeonId)
		return nil
	}
	return value
}

func GetDungeonConfigMap() map[int32]*DungeonConfig {
	return CONF.GameDataMaps.DungeonConfigMap
}
